package docker

//CMD和ENTRYPOINT的区别
//	CMD 			指定这个容器启动的时候要运行的命令  只有最有一个会生效，可被替代
//	ENTRYPOINT		指定这个容器启动的时候要运行的命令 可以追加命令

/*


	测试cmd
	FROM centos

	CMD ["ls","-a"]  #cmd 只会执行最后一行

	运行
	docker run -it 上边build后的容器id

	想追加一个命令
	docker run -it  上边build后的容器id -l [这里是追加到cmd的 ls -al],会报错
	[root@VM_0_13_centos dockerfile]# docker run -it 0c5a7aae0ef4 -l
	docker: Error response from daemon: OCI runtime create failed: container_linux.go:370: starting container process caused: exec: "-l": executable file not found in $PATH: unknown.
	ERRO[0000] error waiting for container: context canceled
	[root@VM_0_13_centos dockerfile]#

	在cmd的情况下， -l 替换了CMD ["ls","-a"]命令，而-l并不是命令，所以报错
		docker run -it 0c5a7aae0ef4 ls -al  就可以

	ENTRYPOINT
		不会替换，会追加到dockerfile.ENTRYPOINT命令的后面
		[root@VM_0_13_centos dockerfile]# more dockerfile-entrypint-test
		FROM centos

		ENTRYPOINT ["ls","-a"]



		[root@VM_0_13_centos dockerfile]# ll
		[root@VM_0_13_centos dockerfile]# vim dockerfile-entrypint-test
		[root@VM_0_13_centos dockerfile]# docker build -f dockerfile-entrypint-test -t dockerfile-entrypoint-test:2.0 .
		[root@VM_0_13_centos dockerfile]# docker run -it 7ab51994119f -l
		...



#cmd

	FROM centos

	CMD ["ls","-a"]  #cmd 只会执行最后一行


	docker run 7ab51994119f
		==>默认  docker run 7ab51994119f [ls -a]

	docker run 7ab51994119f -l
		==>结果 docker run 7ab51994119f [-l]
		==> -l 替换了 [ CMD ["ls","-a"] ],且并不是命令，报错
		==> 实现
			docker run 7ab51994119f ls -al



#entrypoint

		FROM centos

		ENTRYPOINT ["ls","-a"]


		docker run 7ab51994119f
		==>默认  docker run 7ab51994119f [ls -a]

		==>追加 -l
		docker run 7ab51994119f -l
		==>实际运行
		docker run 7ab51994119f ls -al
		并不会报错，因为 -l 命令，并不会替换[ls -a]，而是追加进入成为  ls -al


*/
